package com.blog.util;

import java.io.*;
import java.nio.file.Files;
import java.util.Base64;

/**
 * Base64工具类，用于图片与Base64字符串之间的转换
 */
public class Base64Utils {

    /**
     * 将图片文件转换为Base64字符串
     *
     * @param imagePath 图片文件的路径
     * @return Base64字符串
     * @throws IOException 如果读取文件失败或其他I/O错误
     */
    public static String imageToBase64(String imagePath) throws IOException {
        File file = new File(imagePath);
        if (!file.exists()) {
            throw new FileNotFoundException("文件不存在：" + imagePath);
        }

        byte[] fileContent = Files.readAllBytes(file.toPath());
        return Base64.getEncoder().encodeToString(fileContent);
    }

    /**
     * 将Base64字符串转换为图片并保存到指定路径
     *
     * @param base64Str  Base64字符串
     * @param outputPath 图片保存的路径
     * @throws IOException 如果写入文件失败或其他I/O错误
     */
    public static void base64ToImage(String base64Str, String outputPath) throws IOException {
        // 解码Base64字符串
        byte[] decodedBytes = Base64.getDecoder().decode(base64Str);

        // 将解码后的字节写入到文件
        try (OutputStream outputStream = new FileOutputStream(outputPath)) {
            outputStream.write(decodedBytes);
        }
    }

}
